package com.lyd.sweet.web.config;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.boot.autoconfigure.web.servlet.WebMvcProperties;

/**
 * 覆盖路径匹配策略（解决swagger3.0和spring-boot2.6+无法兼容的问题）
 * 通过bean的后置处理器，覆盖webMvcProperties的路径匹配策略
 * 这边使用代码覆盖是为了业务系统使用时减少配置!
 * 同样可以在application.yml配置文件增加如下配置解决：
 * spring:
 *   mvc:
 *     path-match:
 *       matching-strategy: ANT_PATH_MATCHER
 *
 * （ps:不能过滤掉路径匹配策略非ANT_PATH_MATCHER的HandlerMapper,否则会导致swagger显示不出API
 *
 */
public class WebMvcPropertiesBeanPostProcessor implements BeanPostProcessor {
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        if (bean instanceof WebMvcProperties) {
            ((WebMvcProperties)bean).getPathmatch().setMatchingStrategy(WebMvcProperties.MatchingStrategy.ANT_PATH_MATCHER);
        }
        return bean;
    }
}
